package com.jzo2o.customer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.model.domain.AgencyCertification;
import com.jzo2o.customer.model.dto.AgencyCertificationUpdateDTO;
import com.jzo2o.customer.model.dto.request.*;
import com.jzo2o.customer.model.dto.response.AgencyCertificationAuditResDTO;
import com.jzo2o.customer.model.dto.response.LoginResDTO;

import java.util.Map;

/**
 * <p>
 * 机构认证信息表 服务类
 * </p>
 *
 * @author itcast
 * @since 2023-09-06
 */

public interface IAgencyCertificationService extends IService<AgencyCertification> {


    /**
     * 根据机构id更新
     *
     * @param agencyCertificationUpdateDTO 机构认证更新模型
     */
    void updateByServeProviderId(AgencyCertificationUpdateDTO agencyCertificationUpdateDTO);

    /**
     * 机构注册
     *
     * @param institutionRegisterReqDTO 机构认证更新模型
     */
    LoginResDTO institutionRegister(InstitutionRegisterReqDTO institutionRegisterReqDTO);

    /**
     * 机构登录密码重置
     *
     * @param institutionResetPasswordReqDTO 机构密码重置模型
     */
    void institutionResetPassword(InstitutionResetPasswordReqDTO institutionResetPasswordReqDTO);

    /**
     * 机构认证申请
     *
     * @param agencyCertificationAuditAddReqDTO 机构认证申请模型
     */
    void agencyCertificationAuditAdd(AgencyCertificationAuditAddReqDTO agencyCertificationAuditAddReqDTO);

    /**
     * 获取最新的驳回原因
     *
     * @return 驳回原因
     */
    Map<String, String> checkRejectReason();

    /**
     * 审核机构认证分页查询
     *
     * @param agencyCertificationAuditPageQueryReqDTO 机构认证分页查询模型
     */
    PageResult<AgencyCertificationAuditResDTO> pageQuery(AgencyCertificationAuditPageQueryReqDTO agencyCertificationAuditPageQueryReqDTO);

    /**
     * 审核机构认证信息
     *
     * @param id 机构认证id
     * @param certificationAuditReqDTO 机构认证审核模型
     */
    void agencyCertificationAudit(Long id, CertificationAuditReqDTO certificationAuditReqDTO);
}
